#include "chooselevelscene.h"
#include<QMenuBar>
#include<QPainter>
#include"mypushbutton.h"
#include<QDebug>
#include<QTimer>
#include<QString>
#include<QLabel>
ChooseLevelScene::ChooseLevelScene(QWidget *parent)
    : QMainWindow{parent}
{
    //设置固定尺寸-宽高
        this->setFixedSize(320,588);

    //设置标题
    this->setWindowTitle("选择关卡场景");
    //设置图标
    this->setWindowIcon(QPixmap(":/new/prefix1/res/Coin0001.png"));

    //创建菜单栏的另一方式，使用代码，不使用ui
    QMenuBar* bar=menuBar();
    this->setMenuBar(bar);
    //创建菜单
    QMenu* startMenu=bar->addMenu("开始");
    //创建菜单项
    QAction*quitAction=startMenu->addAction("退出");
    //监听
    connect(quitAction,&QAction::triggered,[=](){
        this->close();
    });

    //返回按钮
    MyPushButton*backBtn=new MyPushButton(":/new/prefix1/res/BackButton.png",":/new/prefix1/res/BackButtonSelected.png");
    backBtn->setParent(this);
    backBtn->move(this->width()-backBtn->width(),this->height()-backBtn->height());
    //监听按下
    connect(backBtn,&MyPushButton::clicked,[=](){
        //发送点击返回的信号
        //可以进行延时，这样点击back的时候跳回主场景不会太快
        QTimer::singleShot(500,this,[=](){
            emit this->chooseSceneBck();
            //谁来监听呢，在主场景监听
        });

    });

    //让psecen置空,现在还不知道要创哪一广，要等选了关卡才知道
    pScene=NULL;

    //创建20个具体的关卡按钮
    for(int i=0;i<20;i++){
        MyPushButton*menuBtn=new MyPushButton(":/new/prefix1/res/LevelIcon.png");
        menuBtn->setParent(this);
        //做出五行四列矩阵效果
        //使用取模运算,x,y,其中25和130是起始，70是间隔
        menuBtn->move(25+(i%4)*70,140+(i/4)*70);

        //20ge按钮就20个监听
        connect(menuBtn,&MyPushButton::clicked,[=](){
           // qDebug()<<"你选择的是第"<<i+1<<"关";
            this->pScene=new PlayScene(i+1);
           this->pScene->show();
            this->hide();

            //在这监听第三场景，不然第三场景都还没创建
            connect(this->pScene,&PlayScene::chooseSceneBck,[=](){
                this->show();
                this->pScene->hide();

                delete this->pScene;
                this->pScene=NULL;
            });

        });

        //在按钮里加文字
        //menuBtn->setText(QString::number(i+1));//这个加上去位置不对，但是已经分装好了改不了
        //直接换用qlabel
        QLabel*label=new QLabel;
        label->setParent(this);
        label->move(25+(i%4)*70,140+(i/4)*70);
        //设置尺寸
        label->setFixedSize(menuBtn->width(),menuBtn->height());
        //设置文本
        label->setText(QString::number(i+1));
        //设置对齐方式，使用一个位或，使其竖直和水平对齐
        label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        //label是会吸收鼠标点击事件的，那这个时候点击鼠标下面的btn不会响应，而被label吸收了
        //所以需要设置鼠标的属性，设置为穿透属性
        label->setAttribute(Qt::WA_TransparentForMouseEvents);

    }

}

void ChooseLevelScene::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(":/new/prefix1/res/OtherSceneBg.png");
    painter.drawPixmap(0,0,this->width(),this->height(),pix);

    //加载标题图片
    pix.load(":/new/prefix1/res/Title.png");
    painter.drawPixmap((this->width()-pix.width())*0.5,30,pix);



}
